The Trilium Metrics API provides comprehensive monitoring data about your Trilium instance, designed for external monitoring systems like Prometheus.

Endpoint

Authentication

You need an ETAPI token to access the metrics endpoint. Get one by:

# Get an ETAPI token
curl -X POST http://localhost:8080/etapi/auth/login \
  -H "Content-Type: application/json" \
  -d '{"password": "your_password"}'

Usage

Prometheus Format (Default)

curl -H "Authorization: YOUR_ETAPI_TOKEN" \
  http://localhost:8080/etapi/metrics

Returns metrics in Prometheus text format:

# HELP trilium_info Trilium instance information
# TYPE trilium_info gauge
trilium_info{version="0.91.6",db_version="231",node_version="v18.17.0"} 1 1701432000

# HELP trilium_notes_total Total number of notes including deleted
# TYPE trilium_notes_total gauge
trilium_notes_total 1234 1701432000

JSON Format

curl -H "Authorization: YOUR_ETAPI_TOKEN" \
  "http://localhost:8080/etapi/metrics?format=json"

Returns detailed metrics in JSON format for debugging or custom integrations.

Available Metrics

Instance Information

Database Metrics

Categorized Metrics

Statistics

Prometheus Configuration

Add to your prometheus.yml:

scrape_configs:
  - job_name: 'trilium'
    static_configs:
      - targets: ['localhost:8080']
    metrics_path: '/etapi/metrics'
    bearer_token: 'YOUR_ETAPI_TOKEN'
    scrape_interval: 30s

Error Responses

Grafana Dashboard

You can also use the Grafana Dashboard that has been created for TriliumNext - just take the JSON from grafana-dashboard.json and then import the dashboard, following these screenshots:

Then paste the JSON, and hit load: